package com.ruoyi.system.enums;

import lombok.Getter;

/**
 * 消息推送任务状态枚举
 * 用于标识消息推送任务的整体状态
 * 
 * @author ruoyi
 * @since 2024-01-01
 */
@Getter
public enum MsgTaskStatusEnum {

    /**
     * 待推送
     * 任务已创建但尚未推送
     */
    PENDING(0, "待推送"),

    /**
     * 已推送
     * 任务已成功推送给所有接收者
     */
    SENT(1, "已推送"),

    /**
     * 已过期
     * 任务已超过有效期，不再推送
     */
    EXPIRED(2, "已过期"),

    /**
     * 取消
     * 任务被手动取消，不再推送
     */
    CANCELLED(3, "取消");

    /**
     * 状态代码
     */
    private final Integer code;
    
    /**
     * 状态描述
     */
    private final String desc;

    /**
     * 构造函数
     * 
     * @param code 状态代码
     * @param desc 状态描述
     */
    MsgTaskStatusEnum(Integer code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    /**
     * 根据代码获取枚举
     * 
     * @param code 状态代码
     * @return 对应的枚举值，未找到返回null
     */
    public static MsgTaskStatusEnum getByCode(Integer code) {
        if (code == null) {
            return null;
        }
        for (MsgTaskStatusEnum status : values()) {
            if (status.getCode().equals(code)) {
                return status;
            }
        }
        return null;
    }

    /**
     * 根据描述获取枚举
     * 
     * @param desc 状态描述
     * @return 对应的枚举值，未找到返回null
     */
    public static MsgTaskStatusEnum getByDesc(String desc) {
        if (desc == null) {
            return null;
        }
        for (MsgTaskStatusEnum status : values()) {
            if (status.getDesc().equals(desc)) {
                return status;
            }
        }
        return null;
    }
}
